#!/bin/bash

# 要查找并杀死的关键词列表
# 请将你想要匹配的命令关键词添加到这个列表中
keywords=(
    "vllm serve"
    "/usr/bin/python -c from multiprocessing.resource_tracker import main"
	"./tests/v1/engine/split_engine_core_launcher.py"
	# "pytest"
	"ray"
	"multiprocessing.spawn"
)

echo "将要查找并终止包含以下关键词的进程："
for keyword in "${keywords[@]}"; do
    echo "- $keyword"
done
echo ""

# 遍历关键词列表
for keyword in "${keywords[@]}"; do
    echo "正在查找包含关键词 '$keyword' 的进程..."

    # 使用 'ps w' 获取所有进程信息，并通过 grep 筛选包含关键词的行
    # -v grep 排除 grep 自身的进程，防止误杀
    # awk '{print $1}' 提取进程ID (PID)
    pids=$(ps w | grep "$keyword" | grep -v grep | awk '{print $1}')

    if [ -z "$pids" ]; then
        echo "未找到包含关键词 '$keyword' 的进程。"
    else
        echo "找到以下包含关键词 '$keyword' 的进程ID: $pids"
        read -p "你确定要终止这些进程吗？(y/N) " confirm

        if [[ "$confirm" =~ ^[Yy]$ ]]; then
            # 遍历并终止找到的进程
            for pid in $pids; do
                echo "正在终止进程 $pid..."
                kill -9 "$pid"
                if [ $? -eq 0 ]; then
                    echo "进程 $pid 已成功终止。"
                else
                    echo "终止进程 $pid 失败，可能权限不足或进程已不存在。"
                fi
            done
        else
            echo "已取消终止包含关键词 '$keyword' 的进程。"
        fi
    fi
    echo ""
done

echo "脚本执行完毕。"
